package 反转链表;

public class ReverseList
{
    public ListNode reverse(ListNode head)
    {
        ListNode pReversedNode = head;
        ListNode pNode = head;
        ListNode pPrev = null;

        while (pNode != null)
        {
            ListNode pNext=pNode.next;
            if (pNext==null)
                pReversedNode=pNode;
            pNode.next=pPrev;
            pPrev=pNode;
            pNode=pNext;
        }
        return pReversedNode;
    }

    public ListNode reverse0(ListNode head) {
        //暂存下一个节点
        //修改当前节点指向

        ListNode pre = null;
        ListNode cur = head;

        while (cur != null) {
            ListNode temp = cur.next;
            cur.next=pre;
            //只是引用指向了一个链表节点，该表其中一个变量的指向，并不影响另一个变量的指向
            pre=cur;
            cur=temp;
        }
        return pre;
    }


}
